package opf5.persistencia.proxies;

import java.util.ArrayList;
import java.util.List;

import opf5.entities.Equipos.EquipoConcreto;
import opf5.entities.dominio.Equipo;
import opf5.entities.dominio.Jugador;
import opf5.entities.repositorios.RepositorioJugadoresPersistente;
import opf5.persistencia.OPF5DBGateway;

public class EquipoDBProxy implements Equipo {
	private EquipoConcreto equipoConcreto;
	private int idEquipo;
	
	public EquipoDBProxy() {
		List<Jugador> jugadores = new ArrayList<Jugador>(5);
		jugadores.add(null);
		jugadores.add(null);
		jugadores.add(null);
		jugadores.add(null);
		jugadores.add(null);
		this.equipoConcreto = new EquipoConcreto(jugadores);
	}
	
	public EquipoDBProxy(EquipoConcreto equipo) {
		this.equipoConcreto = equipo;
	}

	@Override
	public void setResultadoEquipo(int goles) {
		equipoConcreto.setResultadoEquipo(goles);
		OPF5DBGateway.guardarEquipo(this);
	}

	@Override
	public int getResultado() {
		return this.equipoConcreto.getResultado();
	}

	@Override
	public List<Jugador> getJugadores() {
		return this.equipoConcreto.getJugadores();
	}
	
	public void setIdEquipo(int id) {
		this.idEquipo = id;
	}

	public int getIdEquipo() {
		return this.idEquipo;
	}
	
	public void setNombreJugador1(String nombre) {
		this.setJugador(0, nombre);
	}
	
	public void setNombreJugador2(String nombre) {
		this.setJugador(1, nombre);
	}
	
	public void setNombreJugador3(String nombre) {
		this.setJugador(2, nombre);
	}
	
	public void setNombreJugador4(String nombre) {
		this.setJugador(3, nombre);
	}
	
	public void setNombreJugador5(String nombre) {
		this.setJugador(4, nombre);
	}
	
	private void setJugador(int numero, String nombre) {
		Jugador jugador = new RepositorioJugadoresPersistente().getJugadorPorId(nombre);
		this.equipoConcreto.getJugadores().set(numero, jugador);		
	}
	
	public String getNombreJugador1() {
		return this.getNombreJugador(0);
	}
	
	public String getNombreJugador2() {
		return this.getNombreJugador(1);
	}
	
	public String getNombreJugador3() {
		return this.getNombreJugador(2);
	}
	
	public String getNombreJugador4() {
		return this.getNombreJugador(3);
	}
	
	public String getNombreJugador5() {
		return this.getNombreJugador(4);
	}
	
	private String getNombreJugador(int numero) {
		return this.getJugadores().get(numero).getNombre();
	}

	public void setResultado(int goles) {
		equipoConcreto.setResultadoEquipo(goles);
	}
}
